home *** CD-ROM | disk | FTP | other *** search
- ùúùúÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ section prg,code_c
- include "df1:sources/registres.s"
-
- ;*************** INDEX FONCTIONS ***************
-
- openlib=-552
- closelib=-414
- allocmem=-198
- freemem=-210
- permit=-138
- forbid=-132
-
- ;*************** PARAMETRES DE L'ECRAN ***************
-
- nbplane=8
- sizex=320
- sizey=256
-
- startx=129 ;depart horizontal du tracé
- starty=45 ;depart vertical du tracé
-
- tracex=320 ;largeur de l'image a tracer à ...
- ;... partir de startx
-
- displayx=320 ;largeur de l'image a visualiser à ...
- ;... partir de startdisplayx
- displayy=sizey ;hauteur de l'image a visualiser à ...
- ;... partir de starty
-
- startdisplayx=129 ;debut horizontal visible de l'image
-
- stopx=displayx+startdisplayx-256 ;fin horizontale visible de l'image
- stopy=displayy+starty-256 ;fin verticale visible de l'image
-
- ddf_strt=(startx-17)/2
- ddf_stop=ddf_strt+(tracex/2-8)
-
- modulo_pair=(sizex-tracex)/8
- modulo_impair=(sizex-tracex)/8
-
- planesize=sizey*sizex/8
-
- ;*************** CONSTANTES ***************
-
- ;----- pas d'incrementation des couleurs -----
-
- step_R=1
- step_G=1
- step_B=0
-
- ;----- divers -----
-
- execbase=$4
- memory=2+$10000
- copsize=8*2*(32+1)*4+10*4+8*nbplane+4
-
- ;8*2*(32+1)*4 (palette de 256 couleurs)
- ;10*4 (parametres ecran)
- ;8*nbplane (adresses bitplanes)
- ;4 (FFFFFFFE)
-
- ;*************** PROGRAMME PRINCIPAL ***************
-
- bsr.w init
-
- ;----- attente -----
-
- boucle:
- btst #6,$bfe001
- bne boucle
-
- bsr fin
- rts
-
- ;*************** INITIALISATION ***************
-
- init:
-
- ;----- forbid -----
-
- move.l execbase,a6
- jsr forbid(a6)
-
- ;----- reservation de la memoire copper -----
-
- move.l execbase,a6
- move.l #copsize,d0
- move.l #memory,d1
- jsr allocmem(a6)
- move.l d0,copadr
-
- ;----- creation de la copperlist -----
-
- move.l copadr,a0
-
- moveq #0,d0 ;R
- moveq #0,d1 ;G
- moveq #0,d2 ;B
- movea.l a0,a1
- add.w #8*(32+1)*4,a0
- moveq #8-1,d7
-
- coploop1:
- move.w buffer,d6
- move.w #$0106,(a1)+
- move.w d6,(a1)+
- move.w #$0106,(a0)+
- or.w #$0200,d6
- move.w d6,(a0)+
- add.w #$2000,buffer
- move.w #$0180,d3
- moveq #32-1,d6
-
- coploop0:
- move.w d3,(a1)+
- move.w d0,d4
- and.w #$00F0,d4
- lsl.w #4,d4
- move.w d1,d5
- and.w #$00F0,d5
- or.w d5,d4
- move.w d2,d5
- and.w #$00F0,d5
- lsr.w #4,d5
- or.w d5,d4
- move.w d4,(a1)+
-
- move.w d3,(a0)+
- move.w d0,d4
- and.w #$000F,d4
- lsl.w #8,d4
- move.w d1,d5
- and.w #$000F,d5
- lsl.w #4,d5
- or.w d5,d4
- move.w d2,d5
- and.w #$000F,d5
- or.w d5,d4
- move.w d4,(a0)+
-
- addq.w #step_R,d0
- addq.w #step_G,d1
- ; addq.w #step_B,d2
- addq.w #2,d3
-
- dbf d6,coploop0
- dbf d7,coploop1
-
- move.w #$008E,(a0)+ ;DIWSTRT
- move.w #starty*256+startdisplayx,(a0)+
- move.w #$0090,(a0)+ ;DIWSTOP
- move.w #stopy*256+stopx,(a0)+
- move.w #$0100,(a0)+ ;BPLCON0
- moveq #0,d0
- bset #4,d0
- bset #9,d0
- move.w d0,(a0)+
- move.w #$0102,(a0)+ ;BPLCON1
- move.w #$0000,(a0)+
- move.w #$0104,(a0)+ ;BPLCON2
- move.w #$0000,(a0)+
- move.w #$0092,(a0)+ ;DDFSTRT
- move.w #ddf_strt,(a0)+
- move.w #$0094,(a0)+ ;DDFSTOP
- move.w #ddf_stop,(a0)+
- move.w #$0108,(a0)+ ;BPL1MOD
- move.w #modulo_pair,(a0)+
- move.w #$010A,(a0)+ ;BPL2MOD
- move.w #modulo_impair,(a0)+
- move.l #$01FC0000,(a0)+
-
- move.l #plane0adr,d0
- move.w #$E0,(a0)+
- swap d0
- move.w d0,(a0)+
- move.w #$E2,(a0)+
- swap d0
- move.w d0,(a0)+
-
- move.l #plane1adr,d0
- move.w #$E4,(a0)+
- swap d0
- move.w d0,(a0)+
- move.w #$E6,(a0)+
- swap d0
- move.w d0,(a0)+
-
- move.l #plane2adr,d0
- move.w #$E8,(a0)+
- swap d0
- move.w d0,(a0)+
- move.w #$EA,(a0)+
- swap d0
- move.w d0,(a0)+
-
- move.l #plane3adr,d0
- move.w #$EC,(a0)+
- swap d0
- move.w d0,(a0)+
- move.w #$EE,(a0)+
- swap d0
- move.w d0,(a0)+
-
- move.l #plane4adr,d0
- move.w #$F0,(a0)+
- swap d0
- move.w d0,(a0)+
- move.w #$F2,(a0)+
- swap d0
- move.w d0,(a0)+
-
- move.l #plane5adr,d0
- move.w #$F4,(a0)+
- swap d0
- move.w d0,(a0)+
- move.w #$F6,(a0)+
- swap d0
- move.w d0,(a0)+
-
- move.l #plane6adr,d0
- move.w #$F8,(a0)+
- swap d0
- move.w d0,(a0)+
- move.w #$FA,(a0)+
- swap d0
- move.w d0,(a0)+
-
- move.l #plane7adr,d0
- move.w #$FC,(a0)+
- swap d0
- move.w d0,(a0)+
- move.w #$FE,(a0)+
- swap d0
- move.w d0,(a0)+
-
- move.l #$FFFFFFFE,(a0)
-
- ;modif DMA,...
-
- move.w #$03F0,dmacon ;couper tous les DMA
- move.l copadr,cop1lch ;adresse coplist1
- clr.w copjmp1 ;copjump1
- move.w #$87C0,dmacon ;COPEN et BPLEN et BLTPRI et BLTEN
-
- rts
-
- ;*************** FIN DE PROGRAMME ***************
-
- fin:
-
- ;----- restaurer la copperlist dos -----
-
- move.l execbase,a6
- move.l #gfxname,a1
- jsr openlib(a6)
- move.l d0,a1
- move.l 38(a1),cop1lch
- clr.w copjmp1
- jsr closelib(a6)
-
- ;----- liberation de la memoire copper -----
-
- move.l copadr,a1
- move.l #copsize,d0
- jsr freemem(a6)
-
- ;----- restaurer les canaux DMA -----
-
- move.w #$83F0,dmacon
-
- ;----- permit -----
-
- jsr permit(a6)
-
- rts
-
- ;*************** VARIABLES ***************
-
- buffer: dc.w 0
- plane0adr: incbin "df1:graphics/plane0.raw"
- plane1adr: incbin "df1:graphics/plane1.raw"
- plane2adr: incbin "df1:graphics/plane2.raw"
- plane3adr: incbin "df1:graphics/plane3.raw"
- plane4adr: incbin "df1:graphics/plane4.raw"
- plane5adr: incbin "df1:graphics/plane5.raw"
- plane6adr: incbin "df1:graphics/plane6.raw"
- plane7adr: incbin "df1:graphics/plane7.raw"
- copadr: dc.l 0
- gfxname: dc.b "graphics.library",0
- even
-